package com.goldenKey.common.utils;

import org.jasypt.util.text.BasicTextEncryptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Jasypt加密工具类，用于加密和解密字符串。
 * 使用Jasypt库的BasicTextEncryptor进行加密和解密操作。
 */

public final class JasyptEncryptorUtils {
    private static final Logger logger = LoggerFactory.getLogger(JasyptEncryptorUtils.class);

    /**
     * 加密使用的盐值（实际上在这里作为密码使用）。
     */
    private static final String SALT = "chiWoYiZhao";

    /**
     * 加密方法
     *
     * @param plaintext 明文
     * @return 密文
     */
    public static String encode(String plaintext) {
        try {
            BasicTextEncryptor encryptor = new BasicTextEncryptor();
            encryptor.setPassword(SALT);
            return encryptor.encrypt(plaintext);
        } catch (Exception e) {
            logger.error("加密失败: {}", e.getMessage(), e);
            throw new RuntimeException("加密失败", e);
        }
    }

    /**
     * 解密方法
     *
     * @param ciphertext 密文
     * @return 明文
     */
    public static String decode(String ciphertext) {
        try {
            BasicTextEncryptor encryptor = new BasicTextEncryptor();
            encryptor.setPassword(SALT);
            return encryptor.decrypt(ciphertext);
        } catch (Exception e) {
            logger.error("解密失败: {}", e.getMessage(), e);
            throw new RuntimeException("解密失败", e);
        }
    }

    public static void main(String[] args) {
        // 测试加密和解密
        String plaintext = "282244697";
        String encrypted = encode(plaintext);
        System.out.println("加密后的密码: " + encrypted);

        String decrypted = decode(encrypted);
        System.out.println("解密后的密码: " + decrypted);
    }
}
